
const LEVEL_1=new Float32Array([
    0,0,1,
    0.89442,0,0.44721,
    0.27639,0.85064,0.44721,
    0.27639,-0.85064,0.44721,
    -0.7236,-0.52572,0.44721,
    -0.7236,0.52572,0.44721
]);
const LEVEL_2=new Float32Array([
    0,0,1,
    0.52573,0,0.850652,
    0.162456,0.499995,0.850654,
    0.162456,-0.499995,0.850654,
    -0.425323,0.309011,0.850654,
    -0.425323,-0.309011,0.850654,
    0.688189,-0.499997,0.525736,
    0.894426,0,0.447216,
    0.688189,0.499997,0.525736,
    0.276388,0.850649,0.44722,
    -0.262869,0.809012,0.525738,
    -0.723607,0.525725,0.44722,
    -0.850648,0,0.525736,
    -0.723607,-0.525725,0.44722,
    -0.262869,-0.809012,0.525738,
    0.276388,-0.850649,0.44722,
    0,-1,0,
    0.587786,-0.809017,0,
    0.951058,-0.309013,0,
    0.951058,0.309013,0,
    0.587786,0.809017,0
]);
const LEVEL_3=new Float32Array([
    0.276388,0.447220,0.850649,
    -0.723607,0.447220,0.525725,
    -0.723607,0.447220,-0.525725,
    0.276388,0.447220,-0.850649,
    0.894426,0.447216,0.000000,
    0.000000,1.000000,0.000000,
    0.956626,0.251149,0.147618,
    0.951058,-0.000000,0.309013,
    0.951058,0.000000,-0.309013,
    0.956626,0.251149,-0.147618,
    0.155215,0.251152,0.955422,
    0.587786,0.000000,0.809017,
    0.436007,0.251152,0.864188,
    -0.860698,0.251151,0.442858,
    -0.687159,0.251152,0.681715,
    -0.687159,0.251152,-0.681715,
    -0.860698,0.251151,-0.442858,
    0.436007,0.251152,-0.864188,
    0.587786,-0.000000,-0.809017,
    0.000000,0.000000,-1.000000,
    0.155215,0.251152,-0.955422,
    0.831051,0.502299,0.238853,
    0.688189,0.525736,0.499997,
    0.483971,0.502302,0.716565,
    0.029639,0.502302,0.864184,
    -0.262869,0.525738,0.809012,
    -0.531941,0.502302,0.681712,
    -0.812729,0.502301,0.295238,
    -0.850648,0.525736,0.000000,
    -0.812729,0.502301,-0.295238,
    -0.531941,0.502302,-0.681712,
    -0.262869,0.525738,-0.809012,
    0.029639,0.502302,-0.864184,
    0.483971,0.502302,-0.716565,
    0.688189,0.525736,-0.499997,
    0.831051,0.502299,-0.238853,
    0.077607,0.967950,0.238853,
    0.162456,0.850654,0.499995,
    0.232822,0.657519,0.716563,
    0.753442,0.657515,0.000000,
    0.525730,0.850652,0.000000,
    0.251147,0.967949,0.000000,
    -0.203181,0.967950,0.147618,
    -0.425323,0.850654,0.309011,
    -0.609547,0.657519,0.442856,
    -0.203181,0.967950,-0.147618,
    -0.425323,0.850654,-0.309011,
    -0.609547,0.657519,-0.442856,
    0.077607,0.967950,-0.238853,
    0.162456,0.850654,-0.499995,
    0.232822,0.657519,-0.716563,
    0.361800,0.894429,-0.262863,
    0.638194,0.723610,-0.262864,
    0.447209,0.723612,-0.525728,
    -0.138197,0.894430,-0.425319,
    -0.052790,0.723612,-0.688185,
    -0.361804,0.723612,-0.587778,
    -0.447210,0.894429,0.000000,
    -0.670817,0.723611,-0.162457,
    -0.670817,0.723611,0.162457,
    -0.138197,0.894430,0.425319,
    -0.361804,0.723612,0.587778,
    -0.052790,0.723612,0.688185,
    0.361800,0.894429,0.262863,
    0.447209,0.723612,0.525728,
    0.638194,0.723610,0.262864,
    0.861804,0.276396,-0.425322,
    0.809019,0.000000,-0.587782,
    0.670821,0.276397,-0.688189,
    -0.138199,0.276397,-0.951055,
    -0.447215,0.276397,-0.850649,
    -0.947213,0.276396,-0.162458,
    -0.947213,0.276397,0.162458,
    -0.447216,0.276397,0.850648,
    -0.138199,0.276397,0.951055,
    0.670820,0.276396,0.688190,
    0.809019,-0.000002,0.587783,
    0.861804,0.276394,0.425323,
    0.309017,-0.000000,-0.951056,
    0.309017,0.000000,0.951056,
    1.000000,0.000000,0.000000
]);
const LEVEL_4=new Float32Array([
    0.276388,0.447220,0.850649,
    -0.723607,0.447220,0.525725,
    -0.723607,0.447220,-0.525725,
    0.276388,0.447220,-0.850649,
    0.894426,0.447216,0.000000,
    0.000000,1.000000,0.000000,
    0.931188,0.357738,0.070089,
    0.956626,0.251149,0.147618,
    0.964711,0.129893,0.229041,
    0.951058,-0.000000,0.309013,
    0.951058,0.000000,-0.309013,
    0.964711,0.129893,-0.229041,
    0.956626,0.251149,-0.147618,
    0.931188,0.357738,-0.070089,
    0.221089,0.357741,0.907271,
    0.155215,0.251152,0.955422,
    0.080276,0.129894,0.988273,
    -0.000000,-0.000000,1.000000,
    0.587786,0.000000,0.809017,
    0.515946,0.129894,0.846716,
    0.436007,0.251152,0.864188,
    0.354409,0.357742,0.863953,
    -0.794547,0.357741,0.490629,
    -0.860698,0.251151,0.442858,
    -0.915098,0.129893,0.381737,
    -0.645839,0.129894,0.752342,
    -0.687159,0.251152,0.681715,
    -0.712150,0.357741,0.604039,
    -0.712150,0.357741,-0.604039,
    -0.687159,0.251152,-0.681715,
    -0.645839,0.129894,-0.752343,
    -0.915098,0.129893,-0.381737,
    -0.860698,0.251151,-0.442858,
    -0.794547,0.357741,-0.490629,
    0.354409,0.357742,-0.863953,
    0.436007,0.251152,-0.864188,
    0.515946,0.129894,-0.846716,
    0.587786,-0.000000,-0.809017,
    0.080276,0.129894,-0.988273,
    0.155215,0.251152,-0.955422,
    0.221089,0.357741,-0.907271,
    0.871565,0.476984,0.113408,
    0.831051,0.502299,0.238853,
    0.769872,0.519570,0.370600,
    0.688189,0.525736,0.499997,
    0.590366,0.519572,0.617668,
    0.483971,0.502302,0.716565,
    0.377183,0.476988,0.793861,
    0.161465,0.476988,0.863951,
    0.029639,0.502302,0.864184,
    -0.114564,0.519573,0.846711,
    -0.262869,0.525738,0.809012,
    -0.405008,0.519572,0.752338,
    -0.531941,0.502302,0.681712,
    -0.638453,0.476987,0.604038,
    -0.771771,0.476987,0.420539,
    -0.812729,0.502301,0.295238,
    -0.840673,0.519571,0.152694,
    -0.850648,0.525736,-0.000000,
    -0.840673,0.519571,-0.152694,
    -0.812729,0.502301,-0.295238,
    -0.771771,0.476987,-0.420539,
    -0.638452,0.476987,-0.604038,
    -0.531941,0.502302,-0.681712,
    -0.405008,0.519572,-0.752338,
    -0.262869,0.525738,-0.809012,
    -0.114564,0.519572,-0.846711,
    0.029639,0.502302,-0.864184,
    0.161465,0.476988,-0.863951,
    0.377183,0.476988,-0.793861,
    0.483971,0.502302,-0.716565,
    0.590366,0.519572,-0.617668,
    0.688189,0.525736,-0.499997,
    0.769872,0.519570,-0.370600,
    0.831051,0.502299,-0.238853,
    0.871565,0.476984,-0.113408,
    0.036848,0.992865,0.113408,
    0.077607,0.967950,0.238853,
    0.120413,0.920955,0.370598,
    0.162456,0.850654,0.499995,
    0.200688,0.760403,0.617666,
    0.232822,0.657519,0.716563,
    0.257937,0.550685,0.793860,
    0.834716,0.550681,0.000000,
    0.753442,0.657515,0.000000,
    0.649456,0.760399,0.000000,
    0.525730,0.850652,0.000000,
    0.389673,0.920953,0.000000,
    0.251147,0.967949,0.000000,
    0.119245,0.992865,0.000000,
    -0.096471,0.992865,0.070089,
    -0.203181,0.967950,0.147618,
    -0.315251,0.920955,0.229040,
    -0.425323,0.850654,0.309011,
    -0.525420,0.760403,0.381735,
    -0.609547,0.657519,0.442856,
    -0.675300,0.550685,0.490628,
    -0.096471,0.992865,-0.070089,
    -0.203181,0.967950,-0.147618,
    -0.315251,0.920955,-0.229040,
    -0.425323,0.850654,-0.309011,
    -0.525420,0.760403,-0.381735,
    -0.609547,0.657519,-0.442856,
    -0.675300,0.550685,-0.490628,
    0.036848,0.992865,-0.113408,
    0.077607,0.967950,-0.238853,
    0.120413,0.920955,-0.370598,
    0.162456,0.850654,-0.499995,
    0.200688,0.760403,-0.617666,
    0.232822,0.657519,-0.716563,
    0.257937,0.550685,-0.793860,
    0.166198,0.978672,-0.120749,
    0.307167,0.943208,-0.126518,
    0.215245,0.943209,-0.253036,
    0.451375,0.882854,-0.129731,
    0.361800,0.894429,-0.262863,
    0.262862,0.882855,-0.389192,
    0.587783,0.798549,-0.129731,
    0.506729,0.819912,-0.266403,
    0.409951,0.819913,-0.399604,
    0.305014,0.798552,-0.518924,
    0.706258,0.696558,-0.126519,
    0.638194,0.723610,-0.262864,
    0.550008,0.733353,-0.399605,
    0.447209,0.723612,-0.525728,
    0.338569,0.696561,-0.632593,
    0.801022,0.586331,-0.120750,
    0.747366,0.614342,-0.253038,
    0.672087,0.629942,-0.389194,
    0.577830,0.629943,-0.518926,
    0.471599,0.614344,-0.632594,
    0.362366,0.586334,-0.724502,
    -0.063483,0.978672,-0.195376,
    -0.025408,0.943209,-0.331227,
    -0.174138,0.943209,-0.282901,
    0.016098,0.882855,-0.469369,
    -0.138197,0.894430,-0.425319,
    -0.288916,0.882855,-0.370262,
    0.058250,0.798552,-0.599101,
    -0.096779,0.819914,-0.564248,
    -0.253366,0.819914,-0.513369,
    -0.399272,0.798552,-0.450440,
    0.097915,0.696561,-0.710785,
    -0.052790,0.723612,-0.688185,
    -0.210088,0.733355,-0.646571,
    -0.361804,0.723612,-0.587778,
    -0.497009,0.696561,-0.517479,
    0.132684,0.586334,-0.799129,
    -0.009708,0.614345,-0.788978,
    -0.162463,0.629944,-0.759458,
    -0.314971,0.629944,-0.709904,
    -0.455902,0.614344,-0.643998,
    -0.577066,0.586334,-0.568513,
    -0.205432,0.978671,0.000000,
    -0.322868,0.943208,-0.078192,
    -0.322868,0.943208,0.078192,
    -0.441423,0.882855,-0.160354,
    -0.447210,0.894429,0.000000,
    -0.441423,0.882855,0.160354,
    -0.551779,0.798551,-0.240532,
    -0.566539,0.819912,-0.082322,
    -0.566539,0.819912,0.082322,
    -0.551779,0.798551,0.240532,
    -0.645740,0.696561,-0.312768,
    -0.670817,0.723611,-0.162457,
    -0.679848,0.733353,0.000000,
    -0.670817,0.723611,0.162457,
    -0.645740,0.696560,0.312768,
    -0.719015,0.586334,-0.373135,
    -0.753363,0.614343,-0.234576,
    -0.772492,0.629942,-0.080177,
    -0.772492,0.629942,0.080177,
    -0.753363,0.614343,0.234576,
    -0.719015,0.586334,0.373135,
    -0.063483,0.978672,0.195376,
    -0.174138,0.943209,0.282901,
    -0.025408,0.943209,0.331227,
    -0.288916,0.882855,0.370262,
    -0.138197,0.894430,0.425319,
    0.016098,0.882855,0.469369,
    -0.399272,0.798552,0.450440,
    -0.253366,0.819914,0.513369,
    -0.096779,0.819914,0.564248,
    0.058250,0.798552,0.599101,
    -0.497009,0.696561,0.517479,
    -0.361804,0.723612,0.587778,
    -0.210088,0.733355,0.646571,
    -0.052790,0.723612,0.688185,
    0.097915,0.696561,0.710785,
    -0.577066,0.586334,0.568513,
    -0.455902,0.614345,0.643998,
    -0.314971,0.629944,0.709904,
    -0.162463,0.629944,0.759458,
    -0.009708,0.614345,0.788978,
    0.132684,0.586335,0.799129,
    0.166198,0.978672,0.120749,
    0.215245,0.943209,0.253036,
    0.307167,0.943208,0.126518,
    0.262862,0.882855,0.389192,
    0.361800,0.894429,0.262863,
    0.451375,0.882854,0.129731,
    0.305014,0.798552,0.518924,
    0.409951,0.819913,0.399604,
    0.506729,0.819912,0.266403,
    0.587783,0.798549,0.129731,
    0.338569,0.696561,0.632593,
    0.447209,0.723612,0.525728,
    0.550008,0.733353,0.399605,
    0.638194,0.723610,0.262864,
    0.706258,0.696558,0.126519,
    0.362366,0.586334,0.724502,
    0.471599,0.614344,0.632594,
    0.577830,0.629943,0.518926,
    0.672087,0.629942,0.389194,
    0.747366,0.614342,0.253038,
    0.801022,0.586331,0.120750,
    0.903740,0.380897,-0.195376,
    0.921508,0.266063,-0.282902,
    0.854992,0.399094,-0.331229,
    0.918856,0.136410,-0.370264,
    0.861804,0.276396,-0.425322,
    0.782446,0.409229,-0.469371,
    0.892805,-0.000000,-0.450443,
    0.846660,0.140059,-0.513372,
    0.776630,0.280118,-0.564251,
    0.688190,0.409230,-0.599104,
    0.809019,0.000000,-0.587782,
    0.749882,0.140059,-0.646576,
    0.670821,0.276397,-0.688189,
    0.579226,0.399096,-0.710788,
    0.704293,0.000000,-0.709909,
    0.636088,0.136411,-0.759463,
    0.553820,0.266065,-0.788982,
    0.465085,0.380900,-0.799132,
    0.093451,0.380900,-0.919882,
    0.015700,0.266064,-0.963827,
    -0.050816,0.399096,-0.915500,
    -0.068205,0.136410,-0.988302,
    -0.138198,0.276397,-0.951055,
    -0.204615,0.409230,-0.889193,
    -0.226618,0.140059,-0.963861,
    -0.296648,0.280118,-0.912981,
    -0.357124,0.409230,-0.839639,
    -0.383207,0.140059,-0.912982,
    -0.447215,0.276397,-0.850649,
    -0.497012,0.399096,-0.770520,
    -0.525732,0.136410,-0.839642,
    -0.579229,0.266065,-0.770522,
    -0.616302,0.380900,-0.689266,
    -0.845982,0.380899,-0.373136,
    -0.911804,0.266063,-0.312769,
    -0.886396,0.399095,-0.234577,
    -0.961008,0.136410,-0.240533,
    -0.947213,0.276396,-0.162458,
    -0.908902,0.409229,-0.080178,
    -0.986715,0.140059,-0.082322,
    -0.959966,0.280117,0.000000,
    -0.908902,0.409229,0.080178,
    -0.986715,0.140059,0.082323,
    -0.947213,0.276397,0.162458,
    -0.886395,0.399095,0.234577,
    -0.961008,0.136411,0.240534,
    -0.911803,0.266065,0.312769,
    -0.845982,0.380900,0.373136,
    -0.616302,0.380900,0.689266,
    -0.579229,0.266064,0.770521,
    -0.497012,0.399096,0.770520,
    -0.525732,0.136410,0.839641,
    -0.447216,0.276397,0.850649,
    -0.357124,0.409230,0.839639,
    -0.383208,0.140059,0.912982,
    -0.296649,0.280118,0.912981,
    -0.204616,0.409230,0.889193,
    -0.226619,0.140059,0.963861,
    -0.138199,0.276397,0.951055,
    -0.050817,0.399096,0.915500,
    -0.068206,0.136410,0.988302,
    0.015699,0.266064,0.963827,
    0.093451,0.380900,0.919882,
    0.465085,0.380900,0.799132,
    0.553820,0.266064,0.788983,
    0.579226,0.399096,0.710788,
    0.636088,0.136410,0.759463,
    0.670820,0.276396,0.688190,
    0.688190,0.409229,0.599104,
    0.704293,-0.000001,0.709909,
    0.749882,0.140058,0.646576,
    0.776630,0.280116,0.564252,
    0.782446,0.409228,0.469372,
    0.809019,-0.000002,0.587783,
    0.846659,0.140057,0.513373,
    0.861804,0.276394,0.425323,
    0.854992,0.399093,0.331230,
    0.892805,-0.000002,0.450444,
    0.918856,0.136407,0.370266,
    0.921508,0.266061,0.282904,
    0.903740,0.380896,0.195377,
    0.298886,0.253934,-0.919883,
    0.379681,0.133033,-0.915502,
    0.230948,0.133033,-0.963828,
    0.457527,-0.000000,-0.889196,
    0.309017,-0.000000,-0.951056,
    0.152509,0.000000,-0.988302,
    -0.782501,0.253934,-0.568515,
    -0.753368,0.133032,-0.644002,
    -0.845290,0.133032,-0.517482,
    -0.782501,0.253934,0.568515,
    -0.845290,0.133032,0.517482,
    -0.753368,0.133032,0.644002,
    0.298886,0.253934,0.919883,
    0.230948,0.133032,0.963828,
    0.379681,0.133033,0.915502,
    0.152509,-0.000000,0.988302,
    0.309017,0.000000,0.951056,
    0.457527,0.000000,0.889196,
    0.967222,0.253931,0.000000,
    0.988023,0.133031,0.078192,
    0.988023,0.133031,-0.078192,
    0.987059,-0.000000,0.160355,
    1.000000,0.000000,0.000000,
    0.987059,0.000000,-0.160355
]);
const LEVEL_5=new Float32Array([
    0.276388,0.447220,0.850649,
    -0.723607,0.447220,0.525725,
    -0.723607,0.447220,-0.525725,
    0.276388,0.447220,-0.850649,
    0.894426,0.447216,0.000000,
    0.000000,1.000000,0.000000,
    0.913845,0.404639,0.033976,
    0.931188,0.357738,0.070089,
    0.945709,0.306512,0.108095,
    0.956626,0.251149,0.147618,
    0.963179,0.192060,0.188146,
    0.964711,0.129893,0.229041,
    0.960746,0.065522,0.269583,
    0.951058,-0.000000,0.309013,
    0.951058,0.000000,-0.309013,
    0.960746,0.065522,-0.269583,
    0.964711,0.129893,-0.229041,
    0.963179,0.192060,-0.188145,
    0.956626,0.251149,-0.147618,
    0.945709,0.306512,-0.108095,
    0.931188,0.357738,-0.070089,
    0.913845,0.404639,-0.033976,
    0.250075,0.404643,0.879617,
    0.221089,0.357741,0.907271,
    0.189430,0.306515,0.932826,
    0.155215,0.251152,0.955422,
    0.118697,0.192061,0.974178,
    0.080276,0.129893,0.988273,
    0.040494,0.065522,0.997029,
    -0.000000,-0.000000,1.000000,
    0.587786,0.000000,0.809017,
    0.553278,0.065522,0.830416,
    0.515946,0.129894,0.846716,
    0.476577,0.192062,0.857897,
    0.436007,0.251152,0.864188,
    0.395044,0.306515,0.866019,
    0.354409,0.357742,0.863953,
    0.314703,0.404644,0.858618,
    -0.759289,0.404643,0.509651,
    -0.794547,0.357741,0.490629,
    -0.828635,0.306514,0.468416,
    -0.860698,0.251151,0.442858,
    -0.889821,0.192061,0.413922,
    -0.915098,0.129893,0.381737,
    -0.935719,0.065522,0.346607,
    -0.618801,0.065522,0.782811,
    -0.645839,0.129894,0.752342,
    -0.668639,0.192062,0.718356,
    -0.687159,0.251152,0.681715,
    -0.701558,0.306515,0.643323,
    -0.712150,0.357741,0.604039,
    -0.719346,0.404643,0.564628,
    -0.719346,0.404643,-0.564628,
    -0.712150,0.357741,-0.604039,
    -0.701558,0.306515,-0.643323,
    -0.687159,0.251152,-0.681715,
    -0.668639,0.192062,-0.718356,
    -0.645839,0.129894,-0.752342,
    -0.618800,0.065522,-0.782811,
    -0.935719,0.065522,-0.346607,
    -0.915098,0.129893,-0.381737,
    -0.889821,0.192061,-0.413922,
    -0.860698,0.251151,-0.442858,
    -0.828635,0.306514,-0.468416,
    -0.794547,0.357741,-0.490629,
    -0.759289,0.404643,-0.509651,
    0.314703,0.404643,-0.858618,
    0.354409,0.357742,-0.863953,
    0.395044,0.306515,-0.866019,
    0.436007,0.251152,-0.864188,
    0.476577,0.192062,-0.857897,
    0.515946,0.129894,-0.846716,
    0.553278,0.065522,-0.830416,
    0.587786,-0.000000,-0.809017,
    0.040494,0.065522,-0.997029,
    0.080276,0.129894,-0.988273,
    0.118697,0.192062,-0.974178,
    0.155215,0.251152,-0.955422,
    0.189430,0.306515,-0.932826,
    0.221089,0.357741,-0.907271,
    0.250075,0.404643,-0.879617,
    0.884942,0.462445,0.054976,
    0.871565,0.476984,0.113408,
    0.853755,0.490419,0.174903,
    0.831051,0.502299,0.238853,
    0.803129,0.512160,0.304428,
    0.769872,0.519570,0.370600,
    0.731419,0.524174,0.436197,
    0.688189,0.525736,0.499997,
    0.640871,0.524175,0.560826,
    0.590366,0.519572,0.617668,
    0.537709,0.512162,0.669745,
    0.483971,0.502302,0.716565,
    0.430166,0.490423,0.757920,
    0.377183,0.476988,0.793861,
    0.325743,0.462449,0.824641,
    0.221172,0.462449,0.858617,
    0.161465,0.476988,0.863951,
    0.097476,0.490423,0.866016,
    0.029639,0.502302,0.864184,
    -0.041354,0.512163,0.857892,
    -0.114564,0.519572,0.846711,
    -0.188833,0.524176,0.830411,
    -0.262869,0.525738,0.809012,
    -0.335342,0.524176,0.782806,
    -0.405008,0.519572,0.752338,
    -0.470808,0.512162,0.718352,
    -0.531941,0.502302,0.681712,
    -0.587898,0.490422,0.643321,
    -0.638452,0.476987,0.604038,
    -0.683621,0.462449,0.564627,
    -0.748248,0.462449,0.475674,
    -0.771771,0.476987,0.420539,
    -0.793509,0.490422,0.360319,
    -0.812729,0.502301,0.295238,
    -0.828684,0.512161,0.225775,
    -0.840673,0.519571,0.152694,
    -0.848121,0.524174,0.077024,
    -0.850648,0.525736,-0.000000,
    -0.848121,0.524174,-0.077024,
    -0.840673,0.519571,-0.152694,
    -0.828684,0.512161,-0.225775,
    -0.812729,0.502301,-0.295238,
    -0.793509,0.490422,-0.360320,
    -0.771771,0.476987,-0.420539,
    -0.748248,0.462449,-0.475674,
    -0.683621,0.462449,-0.564627,
    -0.638453,0.476987,-0.604038,
    -0.587898,0.490422,-0.643321,
    -0.531941,0.502302,-0.681712,
    -0.470808,0.512163,-0.718352,
    -0.405008,0.519572,-0.752338,
    -0.335342,0.524176,-0.782806,
    -0.262869,0.525738,-0.809012,
    -0.188833,0.524176,-0.830411,
    -0.114564,0.519573,-0.846711,
    -0.041354,0.512163,-0.857892,
    0.029639,0.502302,-0.864184,
    0.097476,0.490423,-0.866016,
    0.161465,0.476988,-0.863951,
    0.221172,0.462449,-0.858617,
    0.325743,0.462449,-0.824641,
    0.377183,0.476988,-0.793861,
    0.430166,0.490423,-0.757920,
    0.483971,0.502302,-0.716564,
    0.537709,0.512162,-0.669745,
    0.590366,0.519572,-0.617668,
    0.640871,0.524175,-0.560826,
    0.688189,0.525736,-0.499997,
    0.731419,0.524174,-0.436197,
    0.769872,0.519570,-0.370599,
    0.803129,0.512160,-0.304428,
    0.831051,0.502299,-0.238853,
    0.853755,0.490419,-0.174903,
    0.871565,0.476984,-0.113408,
    0.884942,0.462445,-0.054976,
    0.017862,0.998328,0.054975,
    0.036848,0.992865,0.113408,
    0.056828,0.982944,0.174903,
    0.077607,0.967950,0.238853,
    0.098913,0.947386,0.304427,
    0.120413,0.920955,0.370598,
    0.141726,0.888621,0.436196,
    0.162456,0.850654,0.499995,
    0.182220,0.807634,0.560824,
    0.200688,0.760403,0.617666,
    0.217609,0.709993,0.669744,
    0.232822,0.657519,0.716563,
    0.246259,0.604083,0.757919,
    0.257937,0.550685,0.793860,
    0.267937,0.498175,0.824640,
    0.867079,0.498170,0.000000,
    0.834716,0.550681,0.000000,
    0.796925,0.604078,0.000000,
    0.753442,0.657515,0.000000,
    0.704213,0.709989,0.000000,
    0.649456,0.760399,0.000000,
    0.589689,0.807630,0.000000,
    0.525730,0.850652,0.000000,
    0.458647,0.888619,0.000000,
    0.389673,0.920953,0.000000,
    0.320097,0.947385,0.000000,
    0.251147,0.967949,0.000000,
    0.183906,0.982944,0.000000,
    0.119245,0.992865,0.000000,
    0.057805,0.998328,0.000000,
    -0.046765,0.998328,0.033976,
    -0.096471,0.992865,0.070089,
    -0.148782,0.982944,0.108095,
    -0.203181,0.967950,0.147618,
    -0.258962,0.947386,0.188145,
    -0.315251,0.920955,0.229040,
    -0.371051,0.888621,0.269581,
    -0.425323,0.850654,0.309011,
    -0.477067,0.807633,0.346605,
    -0.525420,0.760403,0.381735,
    -0.569719,0.709993,0.413921,
    -0.609547,0.657519,0.442856,
    -0.644726,0.604082,0.468415,
    -0.675300,0.550685,0.490628,
    -0.701483,0.498175,0.509651,
    -0.046765,0.998328,-0.033976,
    -0.096471,0.992865,-0.070089,
    -0.148782,0.982944,-0.108095,
    -0.203181,0.967950,-0.147618,
    -0.258962,0.947386,-0.188145,
    -0.315251,0.920955,-0.229040,
    -0.371051,0.888621,-0.269581,
    -0.425323,0.850654,-0.309011,
    -0.477067,0.807633,-0.346605,
    -0.525420,0.760403,-0.381735,
    -0.569719,0.709993,-0.413921,
    -0.609547,0.657519,-0.442856,
    -0.644726,0.604082,-0.468415,
    -0.675300,0.550685,-0.490628,
    -0.701483,0.498175,-0.509651,
    0.017862,0.998328,-0.054975,
    0.036848,0.992865,-0.113408,
    0.056828,0.982944,-0.174903,
    0.077607,0.967950,-0.238853,
    0.098913,0.947386,-0.304427,
    0.120413,0.920955,-0.370598,
    0.141726,0.888621,-0.436196,
    0.162456,0.850654,-0.499995,
    0.182220,0.807634,-0.560824,
    0.200688,0.760403,-0.617666,
    0.217609,0.709993,-0.669744,
    0.232822,0.657519,-0.716563,
    0.246259,0.604083,-0.757919,
    0.257937,0.550685,-0.793860,
    0.267937,0.498175,-0.824640,
    0.078239,0.995313,-0.056844,
    0.142287,0.988089,-0.058606,
    0.099707,0.988089,-0.117212,
    0.209481,0.975957,-0.060207,
    0.166198,0.978672,-0.120749,
    0.121993,0.975958,-0.180622,
    0.279039,0.958303,-0.061587,
    0.235662,0.963905,-0.123894,
    0.190654,0.963906,-0.185841,
    0.144799,0.958304,-0.246348,
    0.349934,0.934675,-0.062687,
    0.307167,0.943208,-0.126518,
    0.262008,0.946105,-0.190360,
    0.215245,0.943209,-0.253036,
    0.167752,0.934676,-0.313433,
    0.420932,0.904870,-0.063453,
    0.379529,0.916213,-0.128497,
    0.334968,0.922047,-0.193973,
    0.287990,0.922047,-0.258631,
    0.239488,0.916214,-0.321243,
    0.190420,0.904872,-0.380720,
    0.490679,0.868998,-0.063847,
    0.451375,0.882854,-0.129731,
    0.408202,0.891493,-0.196500,
    0.361800,0.894429,-0.262863,
    0.313023,0.891493,-0.327500,
    0.262862,0.882855,-0.389192,
    0.212348,0.869000,-0.446931,
    0.557813,0.827507,-0.063847,
    0.521257,0.843417,-0.130150,
    0.480232,0.854548,-0.197801,
    0.435228,0.860282,-0.265504,
    0.387002,0.860282,-0.331880,
    0.336518,0.854549,-0.395602,
    0.284855,0.843419,-0.455524,
    0.233093,0.827510,-0.510779,
    0.621090,0.781166,-0.063453,
    0.587783,0.798549,-0.129731,
    0.549559,0.811702,-0.197801,
    0.506729,0.819912,-0.266403,
    0.459901,0.822705,-0.334137,
    0.409951,0.819913,-0.399604,
    0.357941,0.811703,-0.461536,
    0.305014,0.798552,-0.518924,
    0.252272,0.781169,-0.571081,
    0.679500,0.730992,-0.062687,
    0.649751,0.749207,-0.128498,
    0.614816,0.763799,-0.196501,
    0.574813,0.774014,-0.265505,
    0.530168,0.779278,-0.334138,
    0.481614,0.779278,-0.400965,
    0.430135,0.774015,-0.464633,
    0.376869,0.763801,-0.524002,
    0.322990,0.749210,-0.578240,
    0.269592,0.730996,-0.626869,
    0.732339,0.678149,-0.061588,
    0.706258,0.696558,-0.126519,
    0.674897,0.711961,-0.193974,
    0.638193,0.723610,-0.262864,
    0.596380,0.730880,-0.331881,
    0.550008,0.733353,-0.399605,
    0.499928,0.730881,-0.464634,
    0.447209,0.723612,-0.525728,
    0.393032,0.711963,-0.581923,
    0.338569,0.696561,-0.632593,
    0.284874,0.678153,-0.677462,
    0.779238,0.623830,-0.060208,
    0.756748,0.641858,-0.123895,
    0.729044,0.657463,-0.190361,
    0.695906,0.669944,-0.258633,
    0.657381,0.678670,-0.327502,
    0.613828,0.683164,-0.395604,
    0.565924,0.683164,-0.461538,
    0.514613,0.678671,-0.524003,
    0.461018,0.669946,-0.581923,
    0.406328,0.657466,-0.634537,
    0.351676,0.641861,-0.681424,
    0.298054,0.623834,-0.722492,
    0.820139,0.569156,-0.058607,
    0.801022,0.586331,-0.120750,
    0.776876,0.601602,-0.185843,
    0.747366,0.614342,-0.253038,
    0.712378,0.623954,-0.321246,
    0.672087,0.629942,-0.389194,
    0.626977,0.631977,-0.455527,
    0.577830,0.629943,-0.518926,
    0.525657,0.623955,-0.578242,
    0.471599,0.614344,-0.632594,
    0.416812,0.601605,-0.681424,
    0.362366,0.586334,-0.724502,
    0.309171,0.569160,-0.761886,
    0.855243,0.515099,-0.056844,
    0.839181,0.531071,-0.117213,
    0.818363,0.545580,-0.180623,
    0.792372,0.558084,-0.246351,
    0.760973,0.568048,-0.313436,
    0.724176,0.574995,-0.380723,
    0.682284,0.578565,-0.446935,
    0.635896,0.578566,-0.510782,
    0.585869,0.574996,-0.571084,
    0.533246,0.568049,-0.626872,
    0.479147,0.558086,-0.677464,
    0.424667,0.545583,-0.722494,
    0.370794,0.531074,-0.761887,
    0.318342,0.515103,-0.795818,
    -0.029885,0.995313,-0.091975,
    -0.011770,0.988089,-0.153432,
    -0.080665,0.988089,-0.131047,
    0.007471,0.975958,-0.217831,
    -0.063483,0.978672,-0.195376,
    -0.134084,0.975958,-0.171837,
    0.027653,0.958304,-0.284411,
    -0.045009,0.963906,-0.262412,
    -0.117832,0.963906,-0.238750,
    -0.189547,0.958304,-0.213837,
    0.048514,0.934676,-0.352175,
    -0.025408,0.943209,-0.331227,
    -0.100080,0.946105,-0.308007,
    -0.174138,0.943209,-0.282901,
    -0.246255,0.934676,-0.256397,
    0.069724,0.904872,-0.419935,
    -0.004930,0.916214,-0.400658,
    -0.080971,0.922048,-0.378512,
    -0.156981,0.922048,-0.353814,
    -0.231516,0.916214,-0.327035,
    -0.303244,0.904872,-0.298749,
    0.090902,0.869000,-0.486391,
    0.016098,0.882855,-0.469369,
    -0.060744,0.891494,-0.448942,
    -0.138197,0.894430,-0.425320,
    -0.214743,0.891494,-0.398904,
    -0.288916,0.882855,-0.370262,
    -0.359439,0.869000,-0.340064,
    0.111647,0.827510,-0.550238,
    0.037294,0.843419,-0.535960,
    -0.039723,0.854550,-0.517848,
    -0.118019,0.860283,-0.495969,
    -0.196049,0.860283,-0.470615,
    -0.272252,0.854550,-0.442294,
    -0.345206,0.843419,-0.411677,
    -0.413751,0.827510,-0.379523,
    0.131575,0.781169,-0.610297,
    0.058250,0.798552,-0.599101,
    -0.018301,0.811704,-0.583783,
    -0.096779,0.819914,-0.564248,
    -0.175669,0.822706,-0.540643,
    -0.253366,0.819914,-0.513369,
    -0.328339,0.811704,-0.483044,
    -0.399272,0.798552,-0.450440,
    -0.465175,0.781169,-0.416398,
    0.150354,0.730996,-0.665612,
    0.078571,0.749210,-0.657655,
    0.003102,0.763801,-0.645444,
    -0.074886,0.774016,-0.628722,
    -0.153956,0.779279,-0.607471,
    -0.232516,0.779279,-0.581945,
    -0.308975,0.774016,-0.552661,
    -0.381897,0.763801,-0.520348,
    -0.450131,0.749210,-0.485867,
    -0.512880,0.730996,-0.450110,
    0.167728,0.678153,-0.715525,
    0.097915,0.696561,-0.710785,
    0.024070,0.711964,-0.701804,
    -0.052790,0.723612,-0.688185,
    -0.131350,0.730882,-0.669745,
    -0.210088,0.733355,-0.646571,
    -0.287409,0.730882,-0.619037,
    -0.361804,0.723612,-0.587778,
    -0.431989,0.711963,-0.553619,
    -0.497009,0.696561,-0.517479,
    -0.556275,0.678153,-0.480278,
    0.183532,0.623834,-0.759702,
    0.116012,0.641862,-0.757994,
    0.044239,0.657466,-0.752184,
    -0.030931,0.669946,-0.741765,
    -0.108334,0.678672,-0.726407,
    -0.186561,0.683165,-0.706031,
    -0.264071,0.683165,-0.680846,
    -0.339334,0.678672,-0.651350,
    -0.410981,0.669946,-0.618277,
    -0.477919,0.657466,-0.582522,
    -0.539400,0.641861,-0.545034,
    -0.595028,0.623834,-0.506728,
    0.197694,0.569160,-0.798107,
    0.132684,0.586335,-0.799129,
    0.063316,0.601606,-0.796280,
    -0.009708,0.614345,-0.788978,
    -0.085389,0.623956,-0.776780,
    -0.162463,0.629944,-0.759458,
    -0.239488,0.631979,-0.737054,
    -0.314971,0.629944,-0.709904,
    -0.387506,0.623956,-0.678615,
    -0.455902,0.614345,-0.643998,
    -0.519272,0.601605,-0.606982,
    -0.577066,0.586334,-0.568513,
    -0.629059,0.569159,-0.529474,
    0.210218,0.515103,-0.830949,
    0.147840,0.531075,-0.834328,
    0.081101,0.545583,-0.834123,
    0.010559,0.558087,-0.829715,
    -0.062946,0.568050,-0.820583,
    -0.138309,0.574997,-0.806380,
    -0.214225,0.578567,-0.786999,
    -0.289283,0.578567,-0.762611,
    -0.362092,0.574997,-0.733668,
    -0.431410,0.568050,-0.700860,
    -0.496244,0.558087,-0.665042,
    -0.555904,0.545583,-0.627144,
    -0.610017,0.531074,-0.588081,
    -0.658496,0.515103,-0.548682,
    -0.096708,0.995313,0.000000,
    -0.149560,0.988089,-0.036220,
    -0.149560,0.988089,0.036220,
    -0.204862,0.975958,-0.074420,
    -0.205432,0.978671,0.000000,
    -0.204862,0.975958,0.074420,
    -0.261946,0.958303,-0.114188,
    -0.263478,0.963905,-0.038285,
    -0.263478,0.963905,0.038285,
    -0.261946,0.958303,0.114188,
    -0.319948,0.934676,-0.154969,
    -0.322868,0.943208,-0.078192,
    -0.323860,0.946105,0.000000,
    -0.322868,0.943208,0.078192,
    -0.319948,0.934676,0.154969,
    -0.377837,0.904871,-0.196080,
    -0.382573,0.916214,-0.119122,
    -0.385009,0.922047,-0.039960,
    -0.385009,0.922047,0.039960,
    -0.382573,0.916214,0.119122,
    -0.377837,0.904871,0.196080,
    -0.434495,0.869000,-0.236757,
    -0.441423,0.882855,-0.160354,
    -0.445742,0.891493,-0.080962,
    -0.447210,0.894429,0.000000,
    -0.445742,0.891493,0.080962,
    -0.441423,0.882855,0.160354,
    -0.434495,0.869000,0.236757,
    -0.488808,0.827509,-0.276216,
    -0.498205,0.843418,-0.201090,
    -0.504780,0.854549,-0.122247,
    -0.508166,0.860282,-0.041022,
    -0.508166,0.860282,0.041022,
    -0.504780,0.854549,0.122247,
    -0.498205,0.843418,0.201091,
    -0.488808,0.827509,0.276216,
    -0.539768,0.781169,-0.313728,
    -0.551779,0.798551,-0.240532,
    -0.560867,0.811703,-0.162995,
    -0.566539,0.819912,-0.082322,
    -0.568469,0.822705,0.000000,
    -0.566539,0.819912,0.082322,
    -0.560867,0.811703,0.162995,
    -0.551779,0.798551,0.240532,
    -0.539768,0.781169,0.313728,
    -0.586573,0.730995,-0.348681,
    -0.601188,0.749209,-0.277953,
    -0.612896,0.763800,-0.202405,
    -0.621093,0.774015,-0.123067,
    -0.625316,0.779278,-0.041301,
    -0.625316,0.779278,0.041301,
    -0.621093,0.774014,0.123067,
    -0.612896,0.763800,0.202405,
    -0.601188,0.749209,0.277953,
    -0.586573,0.730995,0.348681,
    -0.628675,0.678152,-0.380628,
    -0.645740,0.696560,-0.312768,
    -0.660018,0.711962,-0.239763,
    -0.670817,0.723611,-0.162457,
    -0.677556,0.730881,-0.082045,
    -0.679848,0.733353,0.000000,
    -0.677556,0.730881,0.082045,
    -0.670817,0.723611,0.162457,
    -0.660018,0.711962,0.239763,
    -0.645740,0.696560,0.312768,
    -0.628675,0.678152,0.380628,
    -0.665806,0.623833,-0.409310,
    -0.685046,0.641861,-0.344568,
    -0.701700,0.657465,-0.274512,
    -0.715020,0.669945,-0.199802,
    -0.724333,0.678671,-0.121443,
    -0.729128,0.683164,-0.040749,
    -0.729128,0.683164,0.040749,
    -0.724333,0.678671,0.121443,
    -0.715020,0.669945,0.199802,
    -0.701700,0.657465,0.274512,
    -0.685046,0.641861,0.344568,
    -0.665806,0.623833,0.409310,
    -0.697954,0.569159,-0.434647,
    -0.719015,0.586334,-0.373135,
    -0.737742,0.601604,-0.306283,
    -0.753363,0.614343,-0.234576,
    -0.765149,0.623954,-0.158831,
    -0.772492,0.629942,-0.080177,
    -0.774987,0.631977,-0.000000,
    -0.772492,0.629942,0.080177,
    -0.765149,0.623954,0.158831,
    -0.753363,0.614343,0.234576,
    -0.737742,0.601604,0.306283,
    -0.719015,0.586334,0.373135,
    -0.697954,0.569159,0.434647,
    -0.725319,0.515103,-0.456707,
    -0.747808,0.531074,-0.398426,
    -0.768237,0.545582,-0.334890,
    -0.785844,0.558086,-0.266440,
    -0.799873,0.568049,-0.193712,
    -0.809654,0.574995,-0.117648,
    -0.814681,0.578565,-0.039460,
    -0.814681,0.578565,0.039460,
    -0.809654,0.574995,0.117648,
    -0.799873,0.568049,0.193712,
    -0.785844,0.558086,0.266440,
    -0.768237,0.545582,0.334890,
    -0.747808,0.531074,0.398426,
    -0.725319,0.515103,0.456707,
    -0.029885,0.995313,0.091975,
    -0.080665,0.988089,0.131047,
    -0.011770,0.988089,0.153432,
    -0.134084,0.975958,0.171837,
    -0.063483,0.978672,0.195376,
    0.007471,0.975958,0.217831,
    -0.189547,0.958304,0.213837,
    -0.117832,0.963906,0.238750,
    -0.045009,0.963906,0.262412,
    0.027653,0.958304,0.284411,
    -0.246255,0.934676,0.256397,
    -0.174138,0.943209,0.282901,
    -0.100080,0.946105,0.308007,
    -0.025408,0.943209,0.331227,
    0.048514,0.934676,0.352175,
    -0.303244,0.904872,0.298749,
    -0.231516,0.916214,0.327035,
    -0.156981,0.922048,0.353815,
    -0.080971,0.922048,0.378512,
    -0.004930,0.916214,0.400658,
    0.069724,0.904872,0.419935,
    -0.359439,0.869000,0.340064,
    -0.288916,0.882855,0.370262,
    -0.214743,0.891494,0.398904,
    -0.138197,0.894430,0.425319,
    -0.060744,0.891494,0.448942,
    0.016098,0.882855,0.469369,
    0.090902,0.869000,0.486391,
    -0.413751,0.827510,0.379523,
    -0.345205,0.843419,0.411677,
    -0.272252,0.854550,0.442294,
    -0.196049,0.860283,0.470615,
    -0.118019,0.860283,0.495969,
    -0.039723,0.854550,0.517848,
    0.037294,0.843419,0.535960,
    0.111647,0.827510,0.550238,
    -0.465175,0.781169,0.416398,
    -0.399272,0.798552,0.450440,
    -0.328339,0.811704,0.483044,
    -0.253366,0.819914,0.513369,
    -0.175669,0.822706,0.540643,
    -0.096779,0.819914,0.564248,
    -0.018301,0.811704,0.583783,
    0.058250,0.798552,0.599101,
    0.131575,0.781169,0.610297,
    -0.512880,0.730996,0.450110,
    -0.450131,0.749210,0.485867,
    -0.381898,0.763801,0.520348,
    -0.308975,0.774016,0.552661,
    -0.232516,0.779279,0.581945,
    -0.153956,0.779279,0.607471,
    -0.074886,0.774016,0.628722,
    0.003102,0.763801,0.645444,
    0.078571,0.749210,0.657655,
    0.150354,0.730996,0.665611,
    -0.556275,0.678153,0.480278,
    -0.497009,0.696561,0.517479,
    -0.431989,0.711963,0.553619,
    -0.361804,0.723612,0.587779,
    -0.287409,0.730882,0.619037,
    -0.210088,0.733355,0.646571,
    -0.131350,0.730882,0.669745,
    -0.052790,0.723612,0.688185,
    0.024070,0.711963,0.701804,
    0.097915,0.696561,0.710785,
    0.167728,0.678153,0.715525,
    -0.595028,0.623834,0.506728,
    -0.539400,0.641861,0.545034,
    -0.477919,0.657466,0.582522,
    -0.410981,0.669946,0.618277,
    -0.339334,0.678672,0.651350,
    -0.264071,0.683165,0.680846,
    -0.186561,0.683165,0.706031,
    -0.108334,0.678672,0.726407,
    -0.030931,0.669946,0.741765,
    0.044239,0.657466,0.752184,
    0.116012,0.641862,0.757994,
    0.183532,0.623834,0.759702,
    -0.629059,0.569159,0.529474,
    -0.577066,0.586334,0.568513,
    -0.519272,0.601605,0.606982,
    -0.455902,0.614345,0.643998,
    -0.387506,0.623956,0.678615,
    -0.314971,0.629944,0.709904,
    -0.239488,0.631979,0.737054,
    -0.162463,0.629944,0.759458,
    -0.085389,0.623956,0.776780,
    -0.009708,0.614345,0.788978,
    0.063316,0.601606,0.796280,
    0.132684,0.586335,0.799129,
    0.197694,0.569160,0.798107,
    -0.658496,0.515103,0.548682,
    -0.610017,0.531074,0.588081,
    -0.555904,0.545583,0.627144,
    -0.496244,0.558087,0.665042,
    -0.431410,0.568050,0.700860,
    -0.362092,0.574997,0.733668,
    -0.289283,0.578567,0.762611,
    -0.214225,0.578567,0.786999,
    -0.138309,0.574997,0.806380,
    -0.062946,0.568050,0.820583,
    0.010559,0.558087,0.829715,
    0.081101,0.545583,0.834123,
    0.147840,0.531075,0.834328,
    0.210218,0.515103,0.830949,
    0.078239,0.995313,0.056844,
    0.099707,0.988089,0.117212,
    0.142287,0.988089,0.058606,
    0.121993,0.975958,0.180622,
    0.166198,0.978672,0.120749,
    0.209481,0.975957,0.060207,
    0.144799,0.958304,0.246348,
    0.190654,0.963906,0.185841,
    0.235662,0.963905,0.123894,
    0.279039,0.958303,0.061587,
    0.167752,0.934676,0.313433,
    0.215245,0.943209,0.253036,
    0.262008,0.946105,0.190360,
    0.307167,0.943208,0.126518,
    0.349934,0.934675,0.062687,
    0.190420,0.904872,0.380720,
    0.239488,0.916214,0.321243,
    0.287990,0.922048,0.258631,
    0.334968,0.922047,0.193973,
    0.379528,0.916213,0.128497,
    0.420932,0.904870,0.063453,
    0.212348,0.869000,0.446931,
    0.262862,0.882855,0.389192,
    0.313023,0.891493,0.327500,
    0.361800,0.894429,0.262863,
    0.408202,0.891493,0.196500,
    0.451375,0.882854,0.129731,
    0.490679,0.868998,0.063847,
    0.233093,0.827510,0.510779,
    0.284855,0.843419,0.455524,
    0.336518,0.854549,0.395602,
    0.387002,0.860282,0.331880,
    0.435228,0.860282,0.265504,
    0.480232,0.854548,0.197801,
    0.521257,0.843417,0.130150,
    0.557813,0.827507,0.063847,
    0.252272,0.781169,0.571081,
    0.305014,0.798552,0.518924,
    0.357941,0.811703,0.461536,
    0.409951,0.819913,0.399604,
    0.459901,0.822705,0.334137,
    0.506729,0.819912,0.266403,
    0.549559,0.811702,0.197801,
    0.587783,0.798549,0.129731,
    0.621090,0.781166,0.063453,
    0.269592,0.730996,0.626869,
    0.322990,0.749210,0.578240,
    0.376869,0.763801,0.524002,
    0.430135,0.774015,0.464633,
    0.481614,0.779278,0.400965,
    0.530168,0.779278,0.334138,
    0.574813,0.774014,0.265505,
    0.614816,0.763799,0.196501,
    0.649751,0.749207,0.128498,
    0.679500,0.730992,0.062687,
    0.284874,0.678153,0.677462,
    0.338568,0.696561,0.632593,
    0.393032,0.711963,0.581923,
    0.447209,0.723612,0.525728,
    0.499928,0.730881,0.464634,
    0.550008,0.733353,0.399605,
    0.596379,0.730880,0.331881,
    0.638193,0.723610,0.262864,
    0.674897,0.711961,0.193974,
    0.706258,0.696558,0.126519,
    0.732339,0.678149,0.061587,
    0.298054,0.623834,0.722492,
    0.351676,0.641861,0.681424,
    0.406328,0.657466,0.634537,
    0.461018,0.669946,0.581923,
    0.514613,0.678671,0.524003,
    0.565924,0.683164,0.461538,
    0.613828,0.683164,0.395604,
    0.657381,0.678670,0.327502,
    0.695906,0.669944,0.258633,
    0.729044,0.657463,0.190361,
    0.756748,0.641858,0.123895,
    0.779238,0.623830,0.060208,
    0.309171,0.569160,0.761886,
    0.362366,0.586334,0.724502,
    0.416812,0.601605,0.681424,
    0.471599,0.614344,0.632594,
    0.525657,0.623955,0.578242,
    0.577830,0.629943,0.518926,
    0.626977,0.631977,0.455527,
    0.672087,0.629942,0.389194,
    0.712378,0.623954,0.321246,
    0.747366,0.614342,0.253038,
    0.776876,0.601602,0.185843,
    0.801022,0.586331,0.120750,
    0.820139,0.569156,0.058607,
    0.318342,0.515103,0.795818,
    0.370794,0.531074,0.761887,
    0.424667,0.545583,0.722494,
    0.479147,0.558086,0.677465,
    0.533246,0.568049,0.626872,
    0.585869,0.574996,0.571084,
    0.635896,0.578566,0.510782,
    0.682284,0.578565,0.446934,
    0.724176,0.574995,0.380723,
    0.760973,0.568048,0.313436,
    0.792372,0.558084,0.246351,
    0.818363,0.545580,0.180623,
    0.839181,0.531071,0.117213,
    0.855243,0.515099,0.056844,
    0.903599,0.418390,-0.091975,
    0.919847,0.369740,-0.131047,
    0.889036,0.431363,-0.153433,
    0.932887,0.316534,-0.171837,
    0.903740,0.380897,-0.195376,
    0.869580,0.443148,-0.217832,
    0.941900,0.259031,-0.213838,
    0.914839,0.325682,-0.238751,
    0.882270,0.390818,-0.262413,
    0.844763,0.453304,-0.284412,
    0.946128,0.197742,-0.256398,
    0.921508,0.266063,-0.282902,
    0.890978,0.333600,-0.308009,
    0.854992,0.399094,-0.331229,
    0.814300,0.461397,-0.352177,
    0.944956,0.133440,-0.298750,
    0.923024,0.202669,-0.327036,
    0.894907,0.271946,-0.353816,
    0.860914,0.339933,-0.378514,
    0.821689,0.405338,-0.400660,
    0.778156,0.467040,-0.419937,
    0.938003,0.067134,-0.340065,
    0.918856,0.136410,-0.370264,
    0.893411,0.206617,-0.398906,
    0.861804,0.276396,-0.425322,
    0.824539,0.344361,-0.448945,
    0.782447,0.409229,-0.469371,
    0.736599,0.469941,-0.486393,
    0.925181,0.000000,-0.379525,
    0.908757,0.068425,-0.411679,
    0.886086,0.138656,-0.442297,
    0.857134,0.209380,-0.470618,
    0.822237,0.279173,-0.495972,
    0.782093,0.346641,-0.517851,
    0.737693,0.410551,-0.535963,
    0.690211,0.469941,-0.550241,
    0.892805,-0.000000,-0.450443,
    0.872846,0.069328,-0.483046,
    0.846660,0.140059,-0.513372,
    0.814409,0.210804,-0.540647,
    0.776630,0.280118,-0.564251,
    0.734189,0.346641,-0.583786,
    0.688190,0.409230,-0.599104,
    0.639849,0.467042,-0.610299,
    0.853952,0.000000,-0.520351,
    0.830476,0.069794,-0.552664,
    0.800990,0.140536,-0.581949,
    0.765856,0.210804,-0.607475,
    0.725786,0.279174,-0.628726,
    0.681771,0.344362,-0.645448,
    0.634968,0.405340,-0.657658,
    0.586574,0.461400,-0.665614,
    0.809019,0.000000,-0.587782,
    0.782251,0.069794,-0.619042,
    0.749882,0.140059,-0.646575,
    0.712457,0.209381,-0.669749,
    0.670821,0.276397,-0.688189,
    0.626028,0.339935,-0.701807,
    0.579226,0.399097,-0.710788,
    0.531539,0.453307,-0.715527,
    0.758774,0.000000,-0.651354,
    0.729133,0.069329,-0.680851,
    0.694469,0.138657,-0.706036,
    0.655465,0.206618,-0.726412,
    0.613044,0.271948,-0.741769,
    0.568263,0.333602,-0.752188,
    0.522207,0.390821,-0.757997,
    0.475885,0.443151,-0.759704,
    0.704293,0.000000,-0.709909,
    0.672356,0.068426,-0.737059,
    0.636088,0.136411,-0.759463,
    0.596263,0.202671,-0.776785,
    0.553820,0.266065,-0.788982,
    0.509767,0.325685,-0.796283,
    0.465085,0.380900,-0.799131,
    0.420649,0.431366,-0.798109,
    0.646851,0.000000,-0.762616,
    0.613284,0.067135,-0.787004,
    0.576139,0.133441,-0.806385,
    0.536221,0.197744,-0.820588,
    0.494436,0.259034,-0.829719,
    0.451705,0.316537,-0.834127,
    0.408880,0.369743,-0.834330,
    0.366698,0.418394,-0.830951,
    0.191749,0.418393,-0.887795,
    0.159610,0.369743,-0.915322,
    0.128798,0.431366,-0.892936,
    0.124846,0.316537,-0.940329,
    0.093451,0.380900,-0.919882,
    0.061538,0.443151,-0.894332,
    0.087685,0.259033,-0.961880,
    0.055630,0.325684,-0.943841,
    0.023061,0.390821,-0.920178,
    -0.009452,0.453307,-0.891304,
    0.048515,0.197743,-0.979053,
    0.015700,0.266064,-0.963827,
    -0.017612,0.333602,-0.942550,
    -0.050816,0.399096,-0.915500,
    -0.083314,0.461400,-0.883272,
    0.007874,0.133441,-0.991025,
    -0.025806,0.202670,-0.978907,
    -0.059963,0.271948,-0.960442,
    -0.093957,0.339934,-0.935744,
    -0.127141,0.405340,-0.905281,
    -0.158927,0.467042,-0.869836,
    -0.033567,0.067135,-0.997179,
    -0.068205,0.136410,-0.988302,
    -0.103309,0.206617,-0.972953,
    -0.138199,0.276397,-0.951055,
    -0.172181,0.344362,-0.922913,
    -0.204615,0.409230,-0.889192,
    -0.234971,0.469942,-0.850848,
    -0.110713,0.068425,-0.991494,
    -0.146839,0.138657,-0.979394,
    -0.182720,0.209380,-0.960611,
    -0.217617,0.279174,-0.935256,
    -0.250831,0.346642,-0.903838,
    -0.281777,0.410552,-0.867208,
    -0.310028,0.469942,-0.826460,
    -0.189685,0.069328,-0.979394,
    -0.226618,0.140059,-0.963861,
    -0.262524,0.210804,-0.941617,
    -0.296648,0.280118,-0.912981,
    -0.328341,0.346642,-0.878653,
    -0.357124,0.409230,-0.839639,
    -0.382710,0.467042,-0.797123,
    -0.268988,0.069793,-0.960612,
    -0.305951,0.140536,-0.941618,
    -0.341085,0.210804,-0.916091,
    -0.373678,0.279174,-0.884549,
    -0.403182,0.344362,-0.847855,
    -0.429258,0.405340,-0.807116,
    -0.451779,0.461400,-0.763548,
    -0.347018,0.069793,-0.935258,
    -0.383207,0.140059,-0.912982,
    -0.416812,0.209381,-0.884550,
    -0.447215,0.276397,-0.850649,
    -0.474009,0.339935,-0.812256,
    -0.497012,0.399096,-0.770520,
    -0.516256,0.453307,-0.726631,
    -0.422216,0.069328,-0.903840,
    -0.456880,0.138657,-0.878655,
    -0.488312,0.206617,-0.847857,
    -0.516026,0.271948,-0.812257,
    -0.539773,0.333602,-0.772887,
    -0.559530,0.390821,-0.730880,
    -0.575467,0.443151,-0.687353,
    -0.493217,0.068425,-0.867211,
    -0.525732,0.136410,-0.839642,
    -0.554513,0.202670,-0.807118,
    -0.579229,0.266065,-0.770522,
    -0.599786,0.325684,-0.730881,
    -0.616302,0.380900,-0.689266,
    -0.629060,0.431366,-0.646689,
    -0.558972,0.067135,-0.826465,
    -0.588882,0.133441,-0.797127,
    -0.614725,0.197743,-0.763551,
    -0.636322,0.259033,-0.726634,
    -0.653718,0.316537,-0.687355,
    -0.667145,0.369743,-0.646690,
    -0.676966,0.418393,-0.605528,
    -0.785090,0.418393,-0.456707,
    -0.821202,0.369742,-0.434647,
    -0.809432,0.431365,-0.398426,
    -0.855727,0.316536,-0.409311,
    -0.845982,0.380899,-0.373136,
    -0.831545,0.443150,-0.334891,
    -0.887707,0.259032,-0.380629,
    -0.880456,0.325683,-0.344569,
    -0.868016,0.390819,-0.306283,
    -0.850602,0.453306,-0.266440,
    -0.916144,0.197742,-0.348682,
    -0.911804,0.266063,-0.312769,
    -0.901861,0.333600,-0.274513,
    -0.886396,0.399095,-0.234577,
    -0.865787,0.461398,-0.193712,
    -0.940089,0.133440,-0.313729,
    -0.938971,0.202669,-0.277954,
    -0.931965,0.271946,-0.239764,
    -0.918980,0.339933,-0.199803,
    -0.900263,0.405338,-0.158831,
    -0.876374,0.467040,-0.117648,
    -0.958748,0.067134,-0.276218,
    -0.961008,0.136410,-0.240533,
    -0.957257,0.206616,-0.202405,
    -0.947213,0.276396,-0.162458,
    -0.930950,0.344361,-0.121443,
    -0.908902,0.409229,-0.080178,
    -0.881816,0.469940,-0.039460,
    -0.977180,0.068425,-0.201091,
    -0.976835,0.138656,-0.162996,
    -0.970059,0.209380,-0.123067,
    -0.956729,0.279173,-0.082045,
    -0.937113,0.346640,-0.040749,
    -0.911838,0.410550,-0.000000,
    -0.881816,0.469940,0.039460,
    -0.990075,0.069328,-0.122247,
    -0.986715,0.140059,-0.082322,
    -0.976656,0.210804,-0.041301,
    -0.959966,0.280117,0.000000,
    -0.937112,0.346640,0.040749,
    -0.908902,0.409229,0.080178,
    -0.876374,0.467040,0.117648,
    -0.996718,0.069794,-0.041022,
    -0.990076,0.140536,0.000000,
    -0.976655,0.210804,0.041302,
    -0.956729,0.279173,0.082045,
    -0.930950,0.344361,0.121443,
    -0.900263,0.405339,0.158831,
    -0.865787,0.461398,0.193712,
    -0.996718,0.069794,0.041023,
    -0.986715,0.140059,0.082323,
    -0.970059,0.209380,0.123068,
    -0.947213,0.276397,0.162458,
    -0.918980,0.339934,0.199803,
    -0.886395,0.399095,0.234577,
    -0.850602,0.453306,0.266440,
    -0.990075,0.069329,0.122248,
    -0.976835,0.138657,0.162997,
    -0.957257,0.206618,0.202406,
    -0.931965,0.271947,0.239764,
    -0.901861,0.333601,0.274513,
    -0.868015,0.390820,0.306283,
    -0.831545,0.443150,0.334891,
    -0.977180,0.068427,0.201092,
    -0.961008,0.136411,0.240534,
    -0.938971,0.202671,0.277955,
    -0.911803,0.266065,0.312769,
    -0.880456,0.325684,0.344569,
    -0.845982,0.380900,0.373136,
    -0.809432,0.431366,0.398426,
    -0.958747,0.067136,0.276219,
    -0.940089,0.133442,0.313730,
    -0.916143,0.197744,0.348683,
    -0.887706,0.259034,0.380630,
    -0.855727,0.316537,0.409312,
    -0.821202,0.369743,0.434647,
    -0.785090,0.418393,0.456707,
    -0.676966,0.418393,0.605527,
    -0.667145,0.369743,0.646689,
    -0.629060,0.431366,0.646689,
    -0.653718,0.316537,0.687355,
    -0.616302,0.380900,0.689266,
    -0.575467,0.443151,0.687353,
    -0.636322,0.259033,0.726633,
    -0.599786,0.325684,0.730881,
    -0.559530,0.390820,0.730880,
    -0.516256,0.453307,0.726631,
    -0.614725,0.197743,0.763551,
    -0.579229,0.266064,0.770521,
    -0.539773,0.333602,0.772887,
    -0.497012,0.399096,0.770520,
    -0.451779,0.461400,0.763548,
    -0.588883,0.133441,0.797126,
    -0.554513,0.202670,0.807118,
    -0.516027,0.271947,0.812257,
    -0.474009,0.339934,0.812256,
    -0.429259,0.405340,0.807116,
    -0.382710,0.467042,0.797123,
    -0.558972,0.067135,0.826464,
    -0.525732,0.136410,0.839641,
    -0.488312,0.206617,0.847857,
    -0.447216,0.276397,0.850648,
    -0.403183,0.344362,0.847855,
    -0.357124,0.409230,0.839639,
    -0.310029,0.469942,0.826461,
    -0.493218,0.068425,0.867211,
    -0.456881,0.138656,0.878655,
    -0.416812,0.209380,0.884549,
    -0.373679,0.279174,0.884549,
    -0.328342,0.346641,0.878653,
    -0.281777,0.410552,0.867208,
    -0.234971,0.469942,0.850848,
    -0.422217,0.069328,0.903840,
    -0.383208,0.140059,0.912982,
    -0.341086,0.210804,0.916091,
    -0.296648,0.280118,0.912981,
    -0.250832,0.346641,0.903838,
    -0.204616,0.409230,0.889193,
    -0.158927,0.467042,0.869836,
    -0.347019,0.069793,0.935258,
    -0.305952,0.140536,0.941617,
    -0.262525,0.210804,0.941617,
    -0.217618,0.279174,0.935256,
    -0.172182,0.344362,0.922913,
    -0.127141,0.405340,0.905281,
    -0.083314,0.461400,0.883272,
    -0.268988,0.069793,0.960611,
    -0.226619,0.140059,0.963861,
    -0.182721,0.209380,0.960611,
    -0.138199,0.276397,0.951055,
    -0.093957,0.339934,0.935744,
    -0.050817,0.399096,0.915500,
    -0.009452,0.453307,0.891304,
    -0.189685,0.069328,0.979394,
    -0.146839,0.138656,0.979394,
    -0.103309,0.206617,0.972953,
    -0.059964,0.271947,0.960442,
    -0.017613,0.333602,0.942550,
    0.023061,0.390820,0.920178,
    0.061538,0.443151,0.894332,
    -0.110714,0.068425,0.991494,
    -0.068205,0.136410,0.988302,
    -0.025806,0.202670,0.978907,
    0.015699,0.266064,0.963827,
    0.055629,0.325684,0.943841,
    0.093451,0.380900,0.919882,
    0.128798,0.431366,0.892936,
    -0.033568,0.067134,0.997179,
    0.007874,0.133441,0.991026,
    0.048515,0.197743,0.979053,
    0.087685,0.259033,0.961880,
    0.124845,0.316536,0.940329,
    0.159610,0.369743,0.915322,
    0.191749,0.418393,0.887795,
    0.366698,0.418394,0.830951,
    0.408880,0.369743,0.834330,
    0.420649,0.431366,0.798109,
    0.451705,0.316537,0.834127,
    0.465085,0.380900,0.799132,
    0.475885,0.443151,0.759704,
    0.494436,0.259033,0.829719,
    0.509767,0.325684,0.796284,
    0.522206,0.390820,0.757997,
    0.531539,0.453307,0.715528,
    0.536221,0.197743,0.820588,
    0.553820,0.266064,0.788983,
    0.568263,0.333602,0.752189,
    0.579226,0.399096,0.710788,
    0.586574,0.461399,0.665614,
    0.576139,0.133441,0.806386,
    0.596263,0.202670,0.776785,
    0.613043,0.271947,0.741770,
    0.626027,0.339934,0.701808,
    0.634968,0.405339,0.657659,
    0.639849,0.467041,0.610300,
    0.613284,0.067134,0.787004,
    0.636088,0.136410,0.759463,
    0.655465,0.206617,0.726413,
    0.670820,0.276396,0.688190,
    0.681771,0.344361,0.645448,
    0.688190,0.409229,0.599104,
    0.690211,0.469941,0.550241,
    0.646851,-0.000001,0.762616,
    0.672355,0.068425,0.737059,
    0.694469,0.138656,0.706037,
    0.712457,0.209379,0.669750,
    0.725786,0.279173,0.628727,
    0.734189,0.346640,0.583787,
    0.737693,0.410550,0.535964,
    0.736599,0.469940,0.486393,
    0.704293,-0.000001,0.709909,
    0.729133,0.069327,0.680852,
    0.749882,0.140058,0.646577,
    0.765855,0.210803,0.607477,
    0.776630,0.280117,0.564252,
    0.782093,0.346640,0.517852,
    0.782446,0.409228,0.469372,
    0.778156,0.467040,0.419938,
    0.758774,-0.000002,0.651354,
    0.782250,0.069792,0.619042,
    0.800989,0.140534,0.581950,
    0.814409,0.210802,0.540648,
    0.822237,0.279172,0.495973,
    0.824539,0.344360,0.448946,
    0.821689,0.405338,0.400661,
    0.814300,0.461397,0.352177,
    0.809019,-0.000002,0.587783,
    0.830476,0.069791,0.552665,
    0.846659,0.140057,0.513373,
    0.857134,0.209378,0.470619,
    0.861804,0.276394,0.425323,
    0.860914,0.339931,0.378515,
    0.854992,0.399093,0.331230,
    0.844763,0.453304,0.284412,
    0.853952,-0.000002,0.520352,
    0.872845,0.069326,0.483048,
    0.886085,0.138654,0.442298,
    0.893411,0.206615,0.398908,
    0.894907,0.271945,0.353818,
    0.890978,0.333599,0.308010,
    0.882270,0.390817,0.262413,
    0.869580,0.443147,0.217833,
    0.892805,-0.000002,0.450444,
    0.908756,0.068423,0.411680,
    0.918856,0.136407,0.370266,
    0.923023,0.202667,0.327038,
    0.921508,0.266061,0.282904,
    0.914839,0.325681,0.238752,
    0.903740,0.380896,0.195377,
    0.889036,0.431362,0.153433,
    0.925181,-0.000002,0.379526,
    0.938002,0.067132,0.340067,
    0.944956,0.133438,0.298752,
    0.946128,0.197740,0.256400,
    0.941900,0.259030,0.213840,
    0.932887,0.316533,0.171838,
    0.919848,0.369739,0.131048,
    0.903599,0.418389,0.091975,
    0.288459,0.358623,-0.887796,
    0.328215,0.308119,-0.892938,
    0.259318,0.308119,-0.915323,
    0.368835,0.253230,-0.894335,
    0.298886,0.253934,-0.919883,
    0.227278,0.253230,-0.940329,
    0.409668,0.194275,-0.891308,
    0.339239,0.195411,-0.920180,
    0.266415,0.195411,-0.943842,
    0.192465,0.194275,-0.961881,
    0.449939,0.131829,-0.883276,
    0.379681,0.133033,-0.915502,
    0.306252,0.133441,-0.942551,
    0.230948,0.133033,-0.963828,
    0.155166,0.131829,-0.979053,
    0.488802,0.066721,-0.869840,
    0.419400,0.067557,-0.905285,
    0.346059,0.067987,-0.935746,
    0.270049,0.067987,-0.960443,
    0.192810,0.067557,-0.978908,
    0.115829,0.066721,-0.991026,
    0.525405,-0.000000,-0.850853,
    0.457527,-0.000000,-0.889196,
    0.385003,-0.000000,-0.922915,
    0.309017,-0.000000,-0.951056,
    0.231002,0.000000,-0.972953,
    0.152509,0.000000,-0.988302,
    0.075058,0.000000,-0.997179,
    -0.755206,0.358623,-0.548683,
    -0.747811,0.308119,-0.588083,
    -0.790391,0.308119,-0.529475,
    -0.736588,0.253230,-0.627147,
    -0.782501,0.253934,-0.568515,
    -0.824075,0.253229,-0.506730,
    -0.721090,0.194275,-0.665046,
    -0.770314,0.195411,-0.606985,
    -0.815322,0.195410,-0.545037,
    -0.855329,0.194274,-0.480281,
    -0.701007,0.131829,-0.700864,
    -0.753368,0.133032,-0.644002,
    -0.801784,0.133441,-0.582526,
    -0.845290,0.133032,-0.517482,
    -0.883188,0.131828,-0.450112,
    -0.676220,0.066721,-0.733673,
    -0.731376,0.067557,-0.678620,
    -0.783011,0.067987,-0.618282,
    -0.829988,0.067987,-0.553623,
    -0.871416,0.067557,-0.485870,
    -0.906730,0.066720,-0.416400,
    -0.755206,0.358623,0.548683,
    -0.790392,0.308119,0.529475,
    -0.747811,0.308119,0.588083,
    -0.824075,0.253229,0.506730,
    -0.782501,0.253933,0.568515,
    -0.736588,0.253230,0.627147,
    -0.855329,0.194274,0.480280,
    -0.815322,0.195410,0.545037,
    -0.770314,0.195411,0.606985,
    -0.721090,0.194275,0.665046,
    -0.883188,0.131828,0.450112,
    -0.845290,0.133032,0.517482,
    -0.801784,0.133441,0.582526,
    -0.753368,0.133032,0.644002,
    -0.701007,0.131829,0.700864,
    -0.906730,0.066720,0.416400,
    -0.871416,0.067557,0.485870,
    -0.829988,0.067987,0.553623,
    -0.783011,0.067987,0.618282,
    -0.731376,0.067557,0.678620,
    -0.676220,0.066721,0.733673,
    0.288458,0.358623,0.887796,
    0.259318,0.308119,0.915323,
    0.328215,0.308119,0.892938,
    0.227278,0.253230,0.940330,
    0.298886,0.253934,0.919883,
    0.368835,0.253230,0.894335,
    0.192465,0.194275,0.961881,
    0.266415,0.195411,0.943842,
    0.339239,0.195411,0.920180,
    0.409668,0.194275,0.891308,
    0.155165,0.131829,0.979053,
    0.230948,0.133032,0.963828,
    0.306252,0.133441,0.942551,
    0.379681,0.133033,0.915502,
    0.449939,0.131829,0.883276,
    0.115829,0.066720,0.991026,
    0.192810,0.067557,0.978908,
    0.270049,0.067987,0.960443,
    0.346059,0.067987,0.935746,
    0.419400,0.067557,0.905285,
    0.488802,0.066721,0.869840,
    0.075058,-0.000000,0.997179,
    0.152509,-0.000000,0.988302,
    0.231002,-0.000000,0.972953,
    0.309017,0.000000,0.951056,
    0.385003,0.000000,0.922915,
    0.457527,0.000000,0.889196,
    0.525405,0.000000,0.850852,
    0.933484,0.358620,0.000000,
    0.950659,0.308116,0.036220,
    0.950659,0.308116,-0.036220,
    0.964540,0.253227,0.074420,
    0.967222,0.253931,0.000000,
    0.964540,0.253227,-0.074420,
    0.974279,0.194273,0.114188,
    0.979974,0.195409,0.038285,
    0.979974,0.195409,-0.038285,
    0.974279,0.194273,-0.114188,
    0.979084,0.131828,0.154969,
    0.988023,0.133031,0.078192,
    0.991057,0.133440,0.000000,
    0.988023,0.133031,-0.078192,
    0.979084,0.131828,-0.154969,
    0.978315,0.066720,0.196080,
    0.990579,0.067556,0.119123,
    0.996886,0.067986,0.039961,
    0.996886,0.067986,-0.039960,
    0.990579,0.067556,-0.119123,
    0.978315,0.066720,-0.196080,
    0.971569,-0.000000,0.236758,
    0.987059,-0.000000,0.160355,
    0.996717,-0.000000,0.080962,
    1.000000,0.000000,0.000000,
    0.996717,0.000000,-0.080962,
    0.987059,0.000000,-0.160355,
    0.971569,0.000000,-0.236758
]);
let level=LEVEL_3;
let range0=new Float32Array(2);
let range1=new Float32Array(2);
let minMax0=new Float32Array(6);
let minMax1=new Float32Array(6);
let rangePoints=new Float32Array(9);//[0,1,2]:pointOnA,[3,4,5]:pointOnB,[6,7,8]:planeNormal
let rangeSize=Number.POSITIVE_INFINITY;
let temp0=new Float32Array(3);
let tempStartEnd=new Float32Array(6);

/**
 * 固定法线轴分离检测
 * 固定法线为球面（近似）均匀分布的一组法线，作为分离平面，避免大量的向量运算和重复比较
 * 法线密度分为5个等级，精度越高，检测越精确，但性能损耗越大：
 *      level1：6（球面12个方向的平面）
 *      level2：21（球面42个方向的平面）
 *      level3：81（球面162个方向的平面）
 *      level4：321（球面642个方向的平面）
 *      level5：1281（球面2562个方向的平面）
 */
export default class SeparationAxisFixed{
    constructor(){
        console.warn('do not instantiate class SeparationAxisFixed,use the static methods provided!');
    }

    //--------------------------------对外属性及方法--------------------------------------

    /**
     * 设置检测的精度（精度越高越消耗性能）
     * @param num {number} 1，2，3，4，5
     */
    static set level(num){
        let i=Math.ceil(num);
        i=i<1?1:(i>5?5:i);
        switch (i) {
            case 1:
                level=LEVEL_1;
                break;
            case 2:
                level=LEVEL_2;
                break;
            case 3:
                level=LEVEL_3;
                break;
            case 4:
                level=LEVEL_4;
                break;
            case 5:
                level=LEVEL_5;
                break;
            default:
                level=LEVEL_2;
        }
    }

    /**
     * 凸壳与凸壳的相交检测
     * @param convexVertices0 {array} 每3个值代表一个顶点
     * @param convexVertices1 {array} 每3个值代表一个顶点
     * @param out {array} 相交信息输出，0-2：交点，3-5：交点，6-8：分离平面法线
     * @returns {boolean}
     */
    static convexIntersectsConvex(convexVertices0,convexVertices1,out) {
        rangeSize=Number.POSITIVE_INFINITY;
        for (let i = 0; i < level.length / 3; i++) {
            SeparationAxisFixed.compareVertices(convexVertices0, level[i * 3], level[i * 3 + 1], level[i * 3 + 2], range0, minMax0);
            SeparationAxisFixed.compareVertices(convexVertices1, level[i * 3], level[i * 3 + 1], level[i * 3 + 2], range1, minMax1);
            SeparationAxisFixed.getPoints(level[i * 3], level[i * 3 + 1], level[i * 3 + 2]);
            if (range1[1] < range0[0] || range0[1] < range1[0]) {
                for (let j = 0; j < rangePoints.length; j++) {
                    out[j] = rangePoints[j];
                }
                return false;
            }
        }
        for (let j = 0; j < rangePoints.length; j++) {
            out[j] = rangePoints[j];
        }
        return true;
    }

    /**
     * 凸壳与球的相交检测
     * @param convexVertices {array} 每3个值代表一个顶点
     * @param sphere {array} 0-2：球心坐标，3：半径
     * @param out {array} 相交信息输出，0-2：交点，3-5：交点，6-8：分离平面法线
     * @returns {boolean}
     */
    static convexIntersectsSphere(convexVertices,sphere,out){
        rangeSize=Number.POSITIVE_INFINITY;
        for(let i=0;i<level.length/3;i++){
            let x=level[i * 3],y=level[i * 3+1],z=level[i * 3+2];
            temp0[0]=x*sphere[3];
            temp0[1]=y*sphere[3];
            temp0[2]=z*sphere[3];
            tempStartEnd[0]=sphere[0]+temp0[0];
            tempStartEnd[1]=sphere[1]+temp0[1];
            tempStartEnd[2]=sphere[2]+temp0[2];
            tempStartEnd[3]=sphere[0]-temp0[0];
            tempStartEnd[4]=sphere[1]-temp0[1];
            tempStartEnd[5]=sphere[2]-temp0[2];
            SeparationAxisFixed.compareVertices(convexVertices, x,y,z, range0, minMax0);
            SeparationAxisFixed.compareVertices(tempStartEnd, x,y,z, range1, minMax1);
            SeparationAxisFixed.getPoints(x,y,z);
            if (range1[1] < range0[0] || range0[1] < range1[0]) {
                for (let j = 0; j < rangePoints.length; j++) {
                    out[j] = rangePoints[j];
                }
                return false;
            }
        }
        for (let j = 0; j < rangePoints.length; j++) {
            out[j] = rangePoints[j];
        }
        return true;
    }

    /**
     * 凸壳与胶囊体的相交检测
     * @param convexVertices {array} 每3个值代表一个顶点
     * @param capsule {array} 0-2：顶部中心点，3-5：底部中心点，6：半径
     * @param out {array} 相交信息输出，0-2：交点，3-5：交点，6-8：分离平面法线
     * @returns {boolean}
     */
    static convexIntersectsCapsule(convexVertices,capsule,out){
        rangeSize=Number.POSITIVE_INFINITY;
        for(let i=0;i<level.length/3;i++){
            let x=level[i * 3],y=level[i * 3+1],z=level[i * 3+2];
            SeparationAxisFixed.projectOnVector(capsule[0],capsule[1],capsule[2],x,y,z,temp0);
            tempStartEnd[0]=temp0[0];
            tempStartEnd[1]=temp0[1];
            tempStartEnd[2]=temp0[2];

            SeparationAxisFixed.projectOnVector(capsule[3],capsule[4],capsule[5],x,y,z,temp0);
            tempStartEnd[3]=temp0[0];
            tempStartEnd[4]=temp0[1];
            tempStartEnd[5]=temp0[2];

            let dot=SeparationAxisFixed.dot(tempStartEnd[3]-tempStartEnd[0],tempStartEnd[4]-tempStartEnd[1],tempStartEnd[5]-tempStartEnd[2],x,y,z);
            temp0[0]=x*capsule[6];
            temp0[1]=y*capsule[6];
            temp0[2]=z*capsule[6];
            if(dot>0){
                tempStartEnd[0]=capsule[0]-temp0[0];
                tempStartEnd[1]=capsule[1]-temp0[1];
                tempStartEnd[2]=capsule[2]-temp0[2];
                tempStartEnd[3]=capsule[3]+temp0[0];
                tempStartEnd[4]=capsule[4]+temp0[1];
                tempStartEnd[5]=capsule[5]+temp0[2];
            }else{
                tempStartEnd[0]=capsule[3]-temp0[0];
                tempStartEnd[1]=capsule[4]-temp0[1];
                tempStartEnd[2]=capsule[5]-temp0[2];
                tempStartEnd[3]=capsule[0]+temp0[0];
                tempStartEnd[4]=capsule[1]+temp0[1];
                tempStartEnd[5]=capsule[2]+temp0[2];
            }
            SeparationAxisFixed.compareVertices(convexVertices, x,y,z, range0, minMax0);
            SeparationAxisFixed.compareVertices(tempStartEnd, x,y,z, range1, minMax1);
            SeparationAxisFixed.getPoints(x,y,z);
            if (range1[1] < range0[0] || range0[1] < range1[0]) {
                for (let j = 0; j < rangePoints.length; j++) {
                    out[j] = rangePoints[j];
                }
                return false;
            }
        }
        for (let j = 0; j < rangePoints.length; j++) {
            out[j] = rangePoints[j];
        }
        return true;
    }

    //--------------------------------内部方法--------------------------------------------

    /**
     * 范围检测
     * @param x0
     * @param y0
     * @param z0
     * @param x1
     * @param y1
     * @param z1
     * @param nx
     * @param ny
     * @param nz
     */
    static setRange(x0,y0,z0,x1,y1,z1,nx,ny,nz){
        rangePoints[0] = x0;
        rangePoints[1] = y0;
        rangePoints[2] = z0;
        rangePoints[3] = x1;
        rangePoints[4] = y1;
        rangePoints[5] = z1;
        rangePoints[6] = nx;
        rangePoints[7] = ny;
        rangePoints[8] = nz;
    }

    /**
     * 获取最近顶点
     * @param nx
     * @param ny
     * @param nz
     */
    static getPoints(nx,ny,nz){
        if(range1[1]<range0[0]||range0[1]<range1[0]) {
            if (range0[1] < range1[0]) {
                SeparationAxisFixed.setRange(minMax0[3],minMax0[4],minMax0[5],minMax1[0],minMax1[1],minMax1[2],nx,ny,nz);
            } else {
                SeparationAxisFixed.setRange(minMax0[0],minMax0[1],minMax0[2],minMax1[3],minMax1[4],minMax1[5],nx,ny,nz);
            }
        }else {
            let i0a1 = SeparationAxisFixed.distanceSquared(minMax0[0], minMax0[1], minMax0[2], minMax1[3], minMax1[4], minMax1[5]);
            let a0i1 = SeparationAxisFixed.distanceSquared(minMax0[3], minMax0[4], minMax0[5], minMax1[0], minMax1[1], minMax1[2]);
            if (i0a1 < a0i1) {
                if(i0a1<rangeSize) {
                    SeparationAxisFixed.setRange(minMax0[0], minMax0[1], minMax0[2], minMax1[3], minMax1[4], minMax1[5], nx, ny, nz);
                    rangeSize=i0a1;
                }
            } else {
                if(a0i1<rangeSize){
                    SeparationAxisFixed.setRange(minMax0[3],minMax0[4],minMax0[5],minMax1[0],minMax1[1],minMax1[2],nx,ny,nz);
                    rangeSize=a0i1;
                }
            }
        }
    }

    /**
     * 两点距离（平方）
     * @param x0
     * @param y0
     * @param z0
     * @param x1
     * @param y1
     * @param z1
     * @returns {number}
     */
    static distanceSquared(x0,y0,z0,x1,y1,z1){
        let dx=x0-x1,dy=y0-y1,dz=z0-z1;
        return dx*dx+dy*dy+dz*dz;
    }

    /**
     * 比较顶点范围
     * @param vertices
     * @param normalX
     * @param normalY
     * @param normalZ
     * @param range
     * @param minMax
     */
    static compareVertices(vertices,normalX,normalY,normalZ,range,minMax){
        range[0]=range[1]=SeparationAxisFixed.dot(normalX,normalY,normalZ,vertices[0],vertices[1],vertices[2]);
        minMax[0]=vertices[0];
        minMax[1]=vertices[1];
        minMax[2]=vertices[2];
        minMax[3]=vertices[0];
        minMax[4]=vertices[1];
        minMax[5]=vertices[2];
        for(let i=1;i<vertices.length/3;i++) {
            let v=SeparationAxisFixed.dot(normalX,normalY,normalZ,vertices[i*3],vertices[i*3+1],vertices[i*3+2]);
            if (v< range[0]) {
                range[0] = v;
                minMax[0]=vertices[i*3];
                minMax[1]=vertices[i*3+1];
                minMax[2]=vertices[i*3+2];
            }
            if (v> range[1]) {
                range[1] = v;
                minMax[3]=vertices[i*3];
                minMax[4]=vertices[i*3+1];
                minMax[5]=vertices[i*3+2];
            }
        }
    }

    /**
     * 两点的点积
     * @param x0
     * @param y0
     * @param z0
     * @param x1
     * @param y1
     * @param z1
     * @returns {number}
     */
    static dot(x0,y0,z0,x1,y1,z1){
        return x0*x1+y0*y1+z0*z1;
    }

    /**
     * 投影到向量
     * @param x
     * @param y
     * @param z
     * @param px
     * @param py
     * @param pz
     * @param out
     */
    static projectOnVector(x,y,z,px,py,pz,out){
        let dot=SeparationAxisFixed.dot(x,y,z,px,py,pz);
        let lsq=px*px+py*py+pz*pz;
        if(lsq===0){
            out[0]=0;
            out[1]=0;
            out[2]=0;
            return;
        }
        let scale=dot/lsq;
        out[0]=px*scale;
        out[1]=py*scale;
        out[2]=pz*scale;
    }
}

